var Base = require('geoClockBase');
var Utils = require('geoUtils');

/**
 * 扩展Date方法
 */
Date.prototype.format = function(fmt) { 
    var o = { 
       "M+" : this.getMonth()+1,                 //月份 
       "d+" : this.getDate(),                    //日 
       "h+" : this.getHours(),                   //小时 
       "m+" : this.getMinutes(),                 //分 
       "s+" : this.getSeconds(),                 //秒 
       "q+" : Math.floor((this.getMonth()+3)/3), //季度 
       "S"  : this.getMilliseconds()             //毫秒 
   }; 
   if(/(y+)/.test(fmt)) {
           fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); 
   }
    for(var k in o) {
       if(new RegExp("("+ k +")").test(fmt)){
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
        }
    }
   return fmt; 
};        

cc.Class({
    extends: Base,

    properties: {
        format:{
            default:'hh:mm:ss',
            tooltip:'js时间格式'
        },
        label:{
            default:null,
            type:cc.Label,
            tooltip:'用来显示时间的label组件'
        }
    },

    // LIFE-CYCLE CALLBACKS:

    // onLoad () {},

    start () {
        this.label = this._getLabel();
    },
    /**
     * 重载
     */
    updateClock(hours, minutes, seconds, milliseconds){
        if (this.label == null) return;
        //
        this.label.string = this.date.format(this.format);
    },
    /**
     * 获取或创建label组件
     */
    _getLabel(){
        if (this.label)
            return this.label;
        //
        var label = Utils.node.getComponentsInHierarchy(this.node, cc.Label)[0];
        //
        if (label)
            return label;
        //
        return this.node.addComponent(cc.Label);
    }
});
